home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
500 MB Nyheder Direkte fra Internet 2
/
500 MB nyheder direkte fra internet CD 2.iso
/
start
/
data
/
text
/
pascal.txt
< prev
next >
Wrap
Text File
|
1994-09-21
|
41KB
|
1,040 lines
FUN
Imagine that you're running for President against Calvin
Coolidge. To win, you must pass Cal in the polls.
You must pass Cal. ``Pass Cal'' is the correct way to pronounce
``PASCAL'', the name of the computer language that programmers
are falling in love with.
PASCAL is harder to learn than BASIC. But once you've learned
PASCAL, you have amazing power: you can write fancy programs more
easily in PASCAL than in BASIC because PASCAL helps organize your
thinking; and your programs will run faster, too!
American teachers require kids to master LOGO in elementary
school, BASIC in high school, and PASCAL in college. Gifted kids
are given the opportunity to start BASIC and PASCAL even sooner
___ and so are kids in progressive schools.
Many high-school seniors take a PASCAL test given by the
College Board. Seniors who pass can get ``advanced placement''
college credit and skip the college's first year of computer
courses.
The nicest kinds of PASCAL are Quick PASCAL (published by
Microsoft) and Turbo PASCAL (published by Borland). They're easy
to understand, run quickly, and cost little.
Quick PASCAL runs on the IBM PC and lists for just $99.
Discount dealers sell it for just $42.
Turbo PASCAL is available for the IBM PC, Mac, and computers
using the CP/M operating system. The newest version of Turbo
PASCAL for the IBM PC is Turbo PASCAL 7, which discount dealers
sell for $99.
If you're on a tight budget, which should you buy ___ Quick
PASCAL or Turbo PASCAL? Since they're very similar to each other,
you'll probably buy Quick PASCAL because it costs less. Another
advantage of Quick PASCAL is that it lets you edit your programs
more easily than Turbo PASCAL. On the other hand, Turbo PASCAL
runs your programs faster, consumes less RAM and disk space,
comes with instruction manuals that are larger and more thorough,
provides on-screen tutorials that are easier to use, understands
better commands for advanced programming, and is the standard
against which all other versions are judged. (Quick PASCAL was
invented just to imitate Turbo PASCAL more cheaply.)
This chapter explains how to use Quick PASCAL and the most
common versions of Turbo PASCAL (versions 4, 5.5, and 6).
If you have Turbo PASCAL 7, follow the instructions for Turbo
PASCAL 6, which is similar. If you have Turbo PASCAL version 5,
follow the instructions for version 5.5.
I'll comment on how other versions of PASCAL differ.
Copy to the hard disk
Quick PASCAL and Turbo
PASCAL come on a pile of floppy disks. You should copy those
disks to your hard disk. Here's how.
Quick PASCAL Turn on the
computer without any floppy in drive A.
The original version of
Quick PASCAL comes on five 5¼-inch floppy disks. When you see the
C prompt, put the Quick PASCAL Setup/Utilities Disk in drive A
and type ``a:''. The computer will display an A prompt. Type
``setup''. The computer will say ``Microsoft Quick Pascal Setup
Program''.
Press ENTER twice. The
computer will say ``Easy Setup Menu''. Type the letter I. Press
ENTER four times.
Put the Quick PASCAL
Program Disk in drive A, and press ENTER. Put the Quick PASCAL
Advisor Disk in drive A, and press ENTER. Put the Quick PASCAL
Libraries Disk in drive A, and press ENTER. Put the Quick PASCAL
Express Disk in drive A; press ENTER twice.
Press R, so that the
computer says ``Setup Main Menu''. Press X, so that you exit to
DOS. You'll see an A prompt.
Turn off the computer,
so you can start fresh.
Turbo PASCAL 4 Turn on
the computer without any floppy in drive A.
After the C prompt, type
``md turbo'' (so you're making a subdirectory called TURBO).
After the next C prompt, type ``cd turbo'' (so you're changing to
the TURBO subdirectory).
Turbo PASCAL 4 comes on
three floppy disks. Put one of those disks in drive A, and type
``copy a:*.*'' (which copies all the floppy's files onto the hard
disk); follow the same procedure for the other two disks.
Turn off the computer,
so you can start fresh.
Turbo PASCAL 5.5 and 6
Turn on the computer without any floppy in drive A.
Your Turbo PASCAL comes
on four 5¼-inch floppy disks. When you see the C prompt, put the
Install/Compiler disk in drive A, and type ``a:install''. The
computer will say ``Turbo PASCAL Installation Utility''.
Press ENTER four times.
You'll see ``C:\TP''. Press the BACKSPACE key, then type URBO so
you see ``C:\TURBO''. At the end of the URBO, press ENTER.
Press the F9 key.
If you're using version
6, put the Turbo Vision/Tour disk in drive A, press ENTER, put
the Help disk in drive A, press ENTER, put the BGI/Utilities disk
in drive A, and press ENTER twice. (If you're using version 5.5,
put the Tour/Online Help disk in drive A, press ENTER, put the
OOP/Demos/BGI/Doc disk in drive A, press ENTER, put the
Utilities/Misc disk in drive A, and press ENTER twice.)
You'll see an A prompt.
Turn off the computer, so you can start fresh.
Start PASCAL
To start using PASCAL, turn on the computer without any floppy
in drive A.
If you've put the DO.BAT file onto your hard disk (as I
recommended in the MS-DOS chapter), your life is easy! Just type
``do qp'' to do Quick PASCAL; type ``do turbo'' to do Turbo
PASCAL.
If you have not put DO.BAT onto your hard disk, your life is
harder! You must type ``cd qp'' and then ``qp'' to do Quick
PASCAL; you must type ``cd turbo'' and then ``turbo'' to do Turbo
PASCAL.
Press the CAPS LOCK key, so the computer will automatically
capitalize everything you type (and your typing will look like
the examples in this chapter).
Here's what to do next.
Quick PASCAL You don't have to do anything!
Turbo PASCAL 4 Press the E key (which means ``Edit''). Make
sure the cursor is at a blank part of the screen. (If it's not,
press the DELETE key several times.)
Turbo PASCAL 5.5 Press the F6 key (so the cursor moves to the
bottom of the screen). Then press the F6 key while holding down
the Alt key (so the bottom of the screen says ``Output''). Then
tap the F6 key without the Alt key (so the cursor moves to the
top part of the screen).
Turbo PASCAL 6 Press F10 then W then the letter O (so the
cursor moves to the bottom of the screen). Press F10 again then W
then T. Press F6.
How to program
For example, type this PASCAL program:
BEGIN;
WRITELN('I WOULD LIKE TO KISS');
WRITELN('YOUR BOTTLE OF WINE');
END.
The program begins with the word BEGIN and ends with the word
END. Every line ends with a semicolon, except that the bottom
line ends with a period. The middle lines say WRITELN, which
tells the computer to WRITE a LiNe.
Naming the program If you wish, you can put an extra line at
the top of the program, to give the program a name. The name can
be up to 8 letters long. For example, if you want to name the
program WINE, you can begin the program by saying PROGRAM WINE,
like this:
PROGRAM WINE;
BEGIN;
WRITELN('I WOULD LIKE TO KISS');
WRITELN('YOUR BOTTLE OF WINE');
END.
Colors If your screen can display colors, here's what you see.
In Turbo PASCAL, the program is yellow. In Quick PASCAL, most of
the program is white, but the keywords (PROGRAM, BEGIN, and END)
turn purple and the strings (`I WOULD LIKE TO KISS' and `YOUR
BOTTLE OF WINE') turn light blue.
Run the program When you
finish typing the program, tell the computer to run it. Here's
how. For Turbo PASCAL 4, press F10 then R. For Turbo PASCAL 5.5 &
6, press F10 then type RR. For Quick PASCAL, press F5; and if the
computer asks ``Rebuild?'', press ENTER.
If you typed the program
correctly, the computer will write:
I WOULD LIKE TO KISS
YOUR BOTTLE OF WINE
If you typed the program
incorrectly, the computer will say:
Error
(If you're using Quick PASCAL, then press ENTER.) The computer
will put the cursor near your error. Correct the error (by using
the arrow keys, DELETE key, and other word-processing keys), then
tell the computer to run the program again.
After a good run After
the computer has run the program successfully, do the following:
for Quick PASCAL, press ENTER; for Turbo PASCAL 4, press ENTER
then E; for Turbo PASCAL 5.5 and 6, you don't have to do
anything!
You'll see the program
again. If you wish, edit the program again and run the edited
version.
Other versions Some
versions of PASCAL require you to say PROGRAM WINE at the top of
the program; if you don't say PROGRAM WINE, those versions gripe.
Ancient versions require
the top line to say this:
PROGRAM WINE(INPUT,OUTPUT);
Some Apple 2 and Mac
versions automatically indent all lines between BEGIN and END and
force you to omit the semicolon next to the word BEGIN.
Advanced editing
While typing and editing
your program, you can edit faster by using these tricks. . . .
To delete a whole line,
move to that line. Then tap the Y key (which means ``Yank it
out'') while holding down the CONTROL key.
To insert an extra line
in the middle of your program, move to where you want the extra
line to begin. Press the ENTER key, then the up-arrow.
Here's how to delete or
move a block of text. . . .
Turbo PASCAL 6 and Quick
PASCAL Put the cursor at the block's beginning. Hold down the
SHIFT key while moving to the block's end, so the entire block
changes color.
Then say what you want
to do to the block. If you want to delete the block, press the
DELETE key for Quick PASCAL; press CONTROL with DELETE for Turbo
PASCAL 6. If you want to move the block instead, press SHIFT with
DELETE, then point where you want the block to appear and press
SHIFT with INSERT.
Turbo PASCAL 4 and 5.5
Put the cursor at the block's beginning. Press CONTROL with K
(which means ``kommand''), then press B (which means ``block'').
Point at the character
after the block's end. Press CONTROL with K, then press K (which
means ``klose''). The entire block changes color.
Then say what you want
to do to the block. If you want to delete the block, press
CONTROL K then Y (``which means ``yank''). If you want to move
the block instead, point where you want the block to appear and
press CONTROL K then V (which means ``visible'').
Save your program
Here's how to copy your program onto the hard disk.
Quick PASCAL Press the Alt key. Say ``File Save'' by typing FS.
If the computer says ``File Name'', type a name for the program
(such as WINE) and press ENTER.
Turbo PASCAL 4 and 5.5 Press the F2 key. If the computer says
``Rename'', type a name for the program (such as WINE) and press
ENTER.
Turbo PASCAL 6 Press the F2 key. If the computer says ``Save
file as'', type a name for the program (such as WINE) and press
ENTER.
Switch programs
Here's how to switch to other programs.
Quick PASCAL Press CONTROL with F4. If the computer asks ``Do
you want to save?'', press N. The screen becomes blank. Press the
Alt key.
If you want to invent a new program, say ``File New'' (by
typing FN). If instead you want to retrieve a saved program, do
this: say ``File Open'' (by typing FO), type the program's name
(such as WINE), and press ENTER.
Turbo PASCAL 4 and 5.5 If you want to invent a new program,
press F10 then type FN (which means File New). If instead you
want to retrieve a saved program, do this: press F3 and ENTER;
point at the program you want to use (by using the arrow keys and
PAGE DOWN key) and press ENTER.
If the computer asks ``Save?'', press N.
Turbo PASCAL 6 Press Alt with F3. If the computer asks
``Save?'', press N.
If you want to invent a new program, press F10 then type FN
(which means File New). If instead you want to retrieve a saved
program, do this: press F3 and ENTER; point at the program you
want to use (by using the arrow keys) and press ENTER.
Multiple writing
This program belongs in your bathroom:
BEGIN;
WRITELN('FAR','TIN','G');
END.
The computer will write FAR, TIN, and G all on the same line,
like this:
FARTING
Exit
When you finish using PASCAL, here's how to return to the DOS
prompt.
Quick PASCAL Press the Alt key. Say ``File eXit'' (by typing
FX). If the computer asks ``Do you want to save?'', press N.
If you're using a fancy color monitor (such as VGA), you'll
discover that Quick PASCAL has changed the monitor's colors. To
reset the colors, turn the computer off and then back on.
Turbo PASCAL Press Alt with X. If the computer asks ``Save?'',
press N.
EXE files
The computer can't
really understand PASCAL. Whenever you tell the computer to run a
PASCAL program, the computer secretly creates a second version of
your program. The second version is written in machine language
instead of PASCAL. (Machine language is the only language the
computer really understands.) Then the computer runs the
machine-language version of your program.
The program you typed
(in PASCAL) is called the source code. The program the computer
runs (in machine language) is called the object code.
When the computer is
translating your program from PASCAL to machine language (from
source code to object code), the computer is said to be compiling
your program. Since Quick PASCAL and Turbo PASCAL make the
computer compile your PASCAL programs, Quick PASCAL and Turbo
PASCAL are called PASCAL compilers.
Example Suppose you type
a PASCAL program, then tell the computer to save it on the hard
disk and call it WINE. The computer will copy it to your hard
disk's PASCAL subdirectory, where it will be called ``WINE.PAS''.
The ``.PAS'' means ``source code written in PASCAL''.
When you tell the
computer to run the WINE.PAS program, the computer translates it
to machine language. The machine-language version (the object
code) is called ``WINE.EXE''. The ``.EXE'' means ``executable
object code written in machine language''.
If you're using Quick
PASCAL, the computer automatically puts WINE.EXE in your disk's
PASCAL subdirectory. If you're using Turbo PASCAL instead, the
computer puts WINE.EXE in the RAM but not on disk ___ unless you
give a special ``Destination Disk'' command.
After the computer has
run your program and put WINE.EXE on disk, you can run the
WINE.EXE machine-language program without using PASCAL. Here's
how: quit PASCAL, then do a ``cd'' to the PASCAL subdirectory,
then type ``wine''.
Experiment Try the
following experiment. . . .
Step 1: type a PASCAL
program.
Step 2: tell the
computer to save the program and call it WINE. The computer will
call your program WINE.PAS and copy it to PASCAL's subdirectory.
(If you're using Turbo PASCAL, the computer will rename a
previous WINE.PAS to WINE.BAK.)
Step 2½: if you're using
Turbo PASCAL, say ``Destination Disk''. Here's how. Press F10
then C. If you see ``Destination Memory'' instead of
``Destination Disk'', press D. Then return to the editor (by
pressing F6 for version 4, Esc for version 5.5).
Step 3: run the program.
The computer will invent WINE.EXE (a machine-language version of
WINE) and put it in PASCAL's subdirectory. Then the computer will
run that machine-language program. (If you're using Quick PASCAL,
the computer will also produce a WINE.QDB to help the Quick
DeBugger.)
Step 4: exit from
PASCAL, so you see the DOS prompt.
Step 5: notice that you
can run WINE.EXE without using PASCAL. Specifically, go into
PASCAL's subdirectory (by typing ``cd \qp'' for Quick PASCAL, or
``cd \turbo'' for Turbo PASCAL), then type ``wine'' (which runs
the WINE.EXE program).
MATH
PASCAL distinguishes between integers and real numbers. Here's
how PASCAL defines them. . . .
Integers
An integer contains no decimal point and no exponent.
IntegerNot an integerComment
-27 -27.0 An integer contains no decimal point.
50000 5E4 An integer contains no exponent.
Real numbers
A real number contains a decimal point or the letter E. For
example, it can be 0.37 or 5.0 or 6E24. If it contains a decimal
point, you should put digits before and after the decimal point.
CorrectIncorrect
0.37 .37
5.0 5.
Other versions Old versions of PASCAL require you to put a
decimal point in every real number; so instead of saying 6E24,
you must say 6.0E24.
Arithmetic
Like BASIC, PASCAL lets you do arithmetic by using the symbols
+, -, *, and /.
If you combine real numbers, the answer is real:
4.9+2.1 is the real number 7.0 (not 7)
5.0-5.0 is the real number 0.0 (not 0)
If you combine a real with an integer, the answer is still
real:
3.5*2 is the real number 7.0 (not 7)
3/.5 is the real number 6.0 (not 6)
If you combine integers, the answer is an integer, except for
division:
7+4 is the integer 11
7-4 is the integer 3
7*4 is the integer 28
7/4 is the real number 1.75
This program makes the computer do all that arithmetic:
BEGIN;
WRITELN(7+4);
WRITELN(7-4);
WRITELN(7*4);
WRITELN(7/4);
END.
The computer will write:
11
3
28
1.7500000000E+00
(Quick PASCAL writes extra zeros, like this:
1.75000000000000E+0000.)
Let's try writing all
those numbers on the same line:
BEGIN;
WRITELN(7+4,7-4,7*4,7/4);
END.
The computer will write:
11328 1.7500000000E+00
Like BASIC, PASCAL lets
you use parentheses to indicate order of operations.
Other versions Some
versions of PASCAL automatically write blank spaces in front of
integers.
Some versions of PASCAL
write 1.75 instead of 1.7500000000E+00. Some Apple 2 and Mac
versions automatically round the answer and write 1.8e+0.
Functions
PASCAL lets you use
these functions:
Function Meaning
ABS(-6) the absolute value
of -6; it's 6
SQR(3) the square of 3;
it's 9
SQRT(9) the square root of
9; it's 3.0
SIN(2) the sine of 2
radians
COS(2) the cosine of 2
radians
ARCTAN(2) the arctangent of
2, in radians
EXP(5) e5, where e is
2.71828182845904523536
LN(9) the natural
logarithm of 9; it's loge 9
The number in parentheses can be either an integer or a real. The
computer's answer is usually a real (exception: for ABS and SQR,
the computer's answer is an integer if the number in parentheses
is an integer).
For example, this
program computes the square root of 9:
BEGIN;
WRITELN(SQRT(9));
END.
The computer will write:
3.0000000000E+00
Don't confuse SQR with
SQRT. The SQR means square; the SQRT means square root. To find
the square of 3, say SQR(3) or 3*3. In BASIC, you could say 3^2;
but in PASCAL, you can't use the symbol ^; use SQR instead.
To turn a real number
into an integer, use these functions:
Function Meaning
ROUND(3.9) 3.9 rounded to the
nearest integer;
it's 4
TRUNC(3.9) 3.9 truncated (by
deleting the .9);
it's 3
Other versions For
UCSD PASCAL, say ATAN instead of ARCTAN.
If you're using UCSD
PASCAL on an Apple and want to use the functions SQRT, SIN, COS,
ATAN, EXP, and LN, you must insert this line immediately under
the line that says PROGRAM:
USES TRANSCEND;
SIMPLE VARIABLES
You can use variables:
Program Meaning
VAR Here are the variables. . . .
FRED,MARTHA: INTEGER; FRED & MARTHA integers;
JILL,TOM: REAL; JILL & TOM are reals.
BEGIN; Now let's begin the program.
FRED:=2; FRED (an integer) is 2.
MARTHA:=4+5; MARTHA (an integer) is 9.
JILL:=9.2; JILL (a real) is 9.2.
TOM:=1.4+2.3; TOM (a real) is 3.7.
WRITELN(FRED*MARTHA,JILL+TOM);Write 18 and 1.2900000000E+01.
The top line says VAR. The word VAR doesn't have a semicolon
after it; the lines underneath VAR are indented. The indentation
is optional but a good habit. To indent easily, tap the TAB key.
For Quick PASCAL, the TAB key indents 8 spaces. For Turbo
PASCAL, the TAB key indents just enough to get past the word
above (VAR).
On the indented lines, say which variables are integers and
which are reals.
Once you've indented a line, the computer automatically indents
all the lines underneath it. If the computer automatically
indents a line that you don't want to indent, here's how to undo
the indentation: for Turbo PASCAL 5.5, press the BACKSPACE key
once; for Turbo PASCAL 4, press the left-arrow key several times;
for Quick PASCAL, tap the TAB key while holding down the SHIFT
key.
In PASCAL, a variable's name can be as long as you like: the
name can be FRED or WASHINGTON or even
SUPERCALIFRAGILISTICEXPIALIDOCIOUS. The name can consists of
letters and digits, but must begin with a letter.
In PASCAL, you must put a colon in front of the equal sign. . .
.
CorrectIncorrect
FRED:=2;FRED=2;
If you want to add a line saying PROGRAM WINE, put that line
above the VAR line.
You can't set an integer variable equal to a real. For example,
if you say ___
VAR
ANN: REAL;
BILL: INTEGER;
BEGIN;
ANN:=3.9;
you cannot then say:
BILL:=ANN;
Instead, you must say ___
BILL:=ROUND(ANN);
or
BILL:=TRUNC(ANN);
Other versions Some versions of PASCAL do not automatically
indent the lines for you.
Old versions of PASCAL look at just the first 8 characters of a
variable's name, and ignore the rest of the name.
READLN
Instead of saying INPUT,
PASCAL says READLN.
VAR
X: REAL;
BEGIN;
WRITELN('WHAT IS YOUR FAVORITE NUMBER?');
READLN(X);
WRITELN('ITS SQUARE ROOT IS',SQRT(X);
END.
When you run the program, the computer asks:
WHAT IS YOUR FAVORITE NUMBER?
Then the READLN(X) statement makes the computer wait for you to
input a value of X. The computer expects you to input a real
number; if you input an integer instead, the computer will
automatically turn it into a real. For example, if you input 9,
the computer will automatically turn it into 9.0 and will write:
ITS SQUARE ROOT IS 3.0000000000E+00
Other versions For old
versions of PASCAL, say READ instead of READLN.
IF
The computer can criticize your age:
VAR
AGE: INTEGER;
BEGIN;
WRITELN('HOW OLD ARE YOU?');
READLN(AGE);
IF AGE<18 THEN
BEGIN;
WRITELN('YOU ARE STILL A MINOR.');
WRITELN('AH, THE JOYS OF YOUTH!');
END;
WRITELN('GLAD TO MEET YOU.');
END.
That program makes the computer ask:
HOW OLD ARE YOU?
If you input a number less than 18, the computer replies:
YOU ARE STILL A MINOR.
AH, THE JOYS OF YOUTH!
GLAD TO MEET YOU.
If you input a number that's at least 18, the computer says just
this:
GLAD TO MEET YOU.
In that program, the line that says ``IF'' is a heading (the
lines underneath it are indented), so do not put a semicolon at
the end of that line!
ELSE
To make your program fancier, insert the shaded lines:
VAR
AGE: INTEGER;
BEGIN;
WRITELN('HOW OLD ARE YOU');
READ(AGE);
IF AGE<18 THEN
BEGIN;
WRITELN('YOU ARE STILL A MINOR.');
WRITELN('AH, THE JOYS OF YOUTH!');
END
ELSE
BEGIN;
WRITELN('I AM GLAD TO HEAR YOU ARE AN ADULT!');
WRITELN('NOW WE CAN HAVE SOME ADULT FUN!');
END;
WRITELN('GLAD TO MEET YOU.');
END.
If your age is less than 18, the computer will say:
YOU ARE STILL A MINOR.
AH, THE JOYS OF YOUTH!
GLAD TO MEET YOU.
If your age is not less than 18, the computer will say:
GLAD TO HEAR YOU ARE AN ADULT!
NOW WE CAN HAVE SOME ADULT FUN!
GLAD TO MEET YOU.
In that program, the line that says ``ELSE'' is a heading, so
do not put a semicolon after the ``ELSE''. Immediately above the
word ELSE, you'll see the word END; do not put a semicolon after
that END.
Symbols
Like BASIC, PASCAL uses
these symbols in the IF line:
< > = <= >= <> AND OR
In the IF line, the
symbol for ``equals'' is ``=''; outside the IF line, the symbol
for ``equals'' is ``:=''.
Instead of saying ___
IF I=3 OR I=8 OR I=25 OR I=95 THEN
you can say:
IF I IN [3,8,25,95] THEN
That means ``If I is in this set of numbers ___ 3,8,25,95 ___
then . . . ''
LOOPS
To create a loop, say FOR or REPEAT or WHILE. Here's how to use
those words.
FOR
Like BASIC, PASCAL uses the word FOR. This program makes the
computer get drunk:
VAR
I: INTEGER;
BEGIN;
FOR I := 7 TO 10 DO
BEGIN;
WRITELN('I DRANK ',I,' BOTTLES OF BEER');
WRITELN('HOORAY!');
END;
WRITELN('NOW I AM DEAD DRUNK');
END.
Since the FOR line is a heading, do not put a semicolon at the
end of it. When you run the program, the computer will write:
I DRANK 7 BOTTLES OF BEER
HOORAY!
I DRANK 8 BOTTLES OF BEER
HOORAY!
I DRANK 9 BOTTLES OF BEER
HOORAY!
I DRANK 10 BOTTLES OF BEER
HOORAY!
NOW I AM DEAD DRUNK
If you want the computer to count backwards ___ from 10 down to
7 ___ change the FOR line to this:
FOR I := 10 DOWNTO 7 DO
REPEAT
This program plays a guessing game:
VAR
GUESS: INTEGER;
BEGIN;
WRITELN('I AM THINKING OF A NUMBER FROM 1 TO 10');
REPEAT
WRITELN('YOU HAVE NOT GUESSED MY NUMBER YET');
WRITELN('WHAT IS MY NUMBER?');
READLN(GUESS);
UNTIL GUESS=6;
WRITELN('CONGRATULATIONS! YOU GUESSED IT! MY NUMBER IS 6');
END.
The computer begins the game by saying:
I AM THINKING OF A NUMBER FROM 1 TO 10
Then the computer REPEATs the following procedure several times:
it says YOU HAVE NOT GUESSED MY NUMBER YET, asks WHAT IS MY
NUMBER, waits for the human to input a guess, and checks whether
the human guessed 6. It repeats that procedure again and again,
UNTIL the human finally guesses 6. Then the computer says:
CONGRATULATIONS! YOU GUESSED IT! MY NUMBER IS 6
In that program, the computer REPEATs the indented lines, UNTIL
GUESS is 6.
If a program contains the word REPEAT, it must also contain the
word UNTIL. The lines between REPEAT and UNTIL are done
repeatedly. After each time, the computer checks whether to
repeat again.
Since the REPEAT line's a heading, it has no semicolon.
Like an IF line, the UNTIL line can contain these symbols:
< > = <= >= <> AND OR IN
Here's another example. Let's make the computer start
with the number 3 and keep doubling it, like this:
3
6
12
24
etc.
Let's make the computer keep doubling but not go over 1000. So
altogether, let's make the computer write:
3
6
12
24
48
96
192
384
768
THOSE ARE ALL THE NUMBERS BELOW 1000
Here's the program:
VAR
I: INTEGER;
BEGIN;
I:=3; Start I at 3.
REPEAT Repeat the
indented lines until I>=1000.
WRITELN(I);
I:=I*2;
UNTIL I>=1000;
WRITELN('THOSE ARE ALL THE NUMBERS BELOW 1000');
END.
WHILE
The word WHILE resembles
the word REPEAT. For example, the previous program (which doubled
3 repeatedly) can be rewritten to use WHILE:
VAR
I: INTEGER;
BEGIN;
I:=3; Start I at 3.
WHILE I<1000 DO If I<1000, do
the indented lines, and repeat them
BEGIN; again and
again, as long as I remains below 1000.
WRITELN(I);
I:=I*2;
END;
WRITELN('THOSE ARE ALL THE NUMBERS BELOW 1000');
END.
The indented lines say
to WRITELN(I) and then double I. The computer repeats those
indented lines many times. Before each repetition, the computer
checks to make sure I is still below 1000. When I passes 1000,
the computer stops looping and proceeds to the next line, which
writes THOSE ARE ALL THE NUMBERS BELOW 1000.
These two structures
resemble each other:
Using REPEAT Using WHILE
REPEAT WHILE I<1000
DO
etc. BEGIN;
UNTIL I>=1000; etc.
END;
Each of those structures makes the computer repeat the indented
lines and check whether I is still below 1000. If you say REPEAT,
the check is done at the loop's bottom, so the computer goes
through the loop once before checking. If you say WHILE, the
check is done at the loop's top, so the computer checks whether
I<1000 before doing the loop the first time.
LOGIC TRICKS
Every statement must end with a semicolon. You can put several
statements on the same line:
Normal Alternative
A:=3; A:=3; B:=7.6; WRITELN(A+B);
B:=7.6;
WRITELN(A+B);
You can continue a statement on the next line:
Normal Alternative
A:=5-2+1; A:=
5-2
+1;
But do not divide a statement in the middle of a word, number,
symbol, or string:
Wrong, because Wrong, because
Wrong, because
Normal Okay middle of word middle of number
middle of symbol
IF AGE>=18 THEN IF AGE IF AG IF AGE>=1 IF
AG>
>=18 THEN E>=18 THEN 8 THEN =18
THEN
Omitting semicolons
You can omit the semicolon after BEGIN:
Normal Alternative
BEGIN; BEGIN
You can omit a semicolon, if the next word is END:
Normal Alternative
A:=3; A:=3
END; END;
You can omit a semicolon, if the next word is UNTIL:
Normal Alternative
I=*2; I=I*2
UNTIL I>=1000;UNTIL I>=1000;
Omitting BEGIN and END
If a heading heads just one indented line (besides BEGIN and
END), you can put that indented line next to the heading (and
omit the BEGIN and END).
Long way Short cut
FOR I := 1 TO 9 DOFOR I := 1 TO 9 DO WRITELN(I);
BEGIN;
WRITELN(I);
END;
WHILE A<100 DOWHILE A<100 DO A:=A+7;
BEGIN;
A=A+7;
END;
IF AGE>=65 THENIF AGE>=65 THEN WRITELN('OLD');
BEGIN;
WRITELN('OLD');
END;
IF WEIGHT>220 THENIF WEIGHT>220 THEN WRITELN('FAT') ELSE
WRITELN('OKAY');
BEGIN;
WRITELN('FAT');
END
ELSE
BEGIN;
WRITELN('OKAY');
END;
REPEAT REPEAT A:=A+7 UNTIL A>100;
A:=A+7;
UNTIL A>100;
Comments
To put comments into your program, surround the comment by
braces:
BASIC PASCAL
10 'I HATE COMPUTERS{I HATE COMPUTERS}
Do not put a semicolon after the comment.
If your screen can display colors, Quick PASCAL makes the
comments and braces turn green.
Other versions If your keyboard is old and lacks braces, use
parentheses and asterisks instead:
(*I HATE COMPUTERS*)
GOTO
You can say GOTO.
LABEL 10;
BEGIN;
WRITELN('MY DOG');
GOTO 10;
WRITELN('NEVER');
10: WRITELN('DRINKS WHISKEY');
END.
The top line warns the computer that a future line will be
labeled ``line 10''. The rest of the program makes the computer
write MY DOG, then skip to line 10, which makes the computer
write DRINKS WHISKEY. Altogether, the computer will write:
MY DOG
DRINKS WHISKEY
Do not put a space between GO and TO.
Here's another example:
LABEL 10;
BEGIN;
10: WRITELN('LOVE');
WRITELN('HATE');
GOTO 10;
END.
The computer will write LOVE and HATE repeatedly:
LOVE
HATE
LOVE
HATE
LOVE
HATE
etc.
To abort the program, tap the C key while holding down the
CONTROL key. (For Quick PASCAL, then press ENTER.)
If your program contains lines numbered 10, 20, and 100, put
this statement at the top of your program:
LABEL 10,20,100;
Put that statement at the very top of your program: the only
statement that should go above it is the one saying PROGRAM. The
PROGRAM and LABEL lines go above all other lines ___ even above
VAR and BEGIN.
Each line number must be small: no higher than 9999.
In PASCAL, you'll rarely need to say GOTO. Instead, try using
the words IF, ELSE, FOR, REPEAT, and WHILE.
Other versions In UCSD PASCAL, if you want to say GOTO, you
must say (*$G+*) at the top of your program:
(*$G+*)
PROGRAM SKIPPER;
LABEL 10;
etc.
Procedures
This program teases you,
with the help of some insults:
PROGRAM INSULT;
BEGIN;
WRITELN('YOU ARE STUPID');
WRITELN('YOU ARE UGLY');
END;
{MAIN ROUTINE}
BEGIN;
WRITELN('WE ALL KNOW...');
INSULT;
WRITELN('...AND YET WE LOVE YOU');
END.
That program begins by
defining INSULT to be this procedure:
WRITELN('YOU ARE STUPID');
WRITELN('YOU ARE UGLY');
The main routine makes the computer write `WE ALL KNOW...', then
do the INSULT procedure, then write `...AND YET WE LOVE YOU';
altogether, the computer will write:
WE ALL KNOW...
YOU ARE STUPID
YOU ARE UGLY
...AND YET WE LOVE YOU
The PROCEDURE, called
INSULT, is a subroutine. In PASCAL, subroutines come before the
main routine. (In BASIC, subroutines come after the main routine
instead.)
Put a program's VAR
above any procedures:
VAR The program
uses a variable,
I: INTEGER; called I,
which is an integer.
PROCEDURE DOUBLE; The subroutine
is called DOUBLE.
BEGIN;
I:=2*I; The subroutine
doubles the value of I
WRITELN(I); and writes the
new value of I.
END;
{MAIN ROUTINE} Here's the
main routine. . . .
BEGIN;
I:=7; I starts at 7.
DOUBLE; Do subroutine
DOUBLE, which writes 14.
DOUBLE; Do DOUBLE
again, which writes 28.
WRITELN(I+1); Write 29.
END.
ADVANCED VARIABLES
You've seen that a variable can stand for a number. This
section explains how to make a variable stand for a character,
array, or string.
CHAR
A variable can stand for a character:
VAR
ANN,JOAN: CHAR;ANN and JOAN will each be a character.
BEGIN;
ANN:='U'; ANN is the character `U'.
JOAN:='P'; JOAN is the character `P'.
WRITELN(ANN,JOAN);The computer will write `U' and `P'.
END.
The computer will write U and P like this:
UP
You can put a character variable after the word FOR:
VAR
I: CHAR;
BEGIN;
FOR I := 'A' TO 'E' DO WRITELN(I);
END.
The computer will write:
A
B
C
D
E
ARRAY
Let's make X be this list of real numbers: 4.2, 71.6, 8.3,
92.6, 403.7, 1.4. Here's how:
VAR
X: ARRAY [1..6] OF REAL;
BEGIN;
X[1]:=4.2;
X[2]:=71.6;
X[3]:=8.3;
X[4]:=92.6;
X[5]:=403.7;
X[6]:=1.4;
WRITELN(X[1]+X[2]+X[3]+X[4]+X[5]+X[6]);
END.
The computer will write the sum, 581.8.
Subscripts can be negative:
VAR
Y: ARRAY [-2..3] OF REAL;
BEGIN;
Y[-2]:=400.1;
Y[-1]:=274.1;
Y[0]:=9.2;
Y[1]:=8.04;
Y[2]:=0.6;
Y[3]:=-5.0;
WRITELN(Y[-2]+Y[-1]+Y[0]+Y[1]+Y[2]+Y[3]);
END.
The computer will write the sum, 687.04.
Here's how to make Z be
a table having 6 rows and 4 columns of reals:
VAR
Z: ARRAY [1..6, 1..4] OF REAL;
The number in the 3rd row and 2nd column is called Z[3,2]. The
entire first row of Z is called Z[1]; the second row is called
Z[2]; etc. For example, if you say ___
Z[5]:=Z[3];
the computer will look at the real numbers in the 3rd row of Z,
and copy them into the 5th row. Suppose W is another array that
has 6 rows and 4 columns; if you say ___
W:=Z;
the computer will look at each real number in Z and copy it into
W.
You can have many kinds
of arrays: you can have an array of REAL, an array of INTEGER,
and even an array of CHAR.
STRING
A variable can stand for
a string:
VAR
X: STRING;
BEGIN;
X:='I LOVE MY MOTH';
WRITELN(X,'ER');
END.
The computer will write
`I LOVE MY MOTH' and then `ER', like this:
I LOVE MY MOTHER
You can make the
computer read a string:
VAR
X: STRING;
BEGIN;
WRITELN('WHAT IS YOUR NAME?');
READLN(X);
WRITELN('HELLO ',X,' THE BEAUTIFUL');
END.
When you run that program, the computer asks:
WHAT IS YOUR NAME?
Then the READLN(X) statement makes the computer wait for you to
input a string. If you input the name MARILYN MONROE, the
computer will write:
HELLO MARILYN MONROE THE BEAUTIFUL
Other versions Instead
of letting you say STRING, some versions of PASCAL require you to
say STRING[80].
The oldest versions of
PASCAL require you to say PACKED ARRAY [1..80] OF CHAR instead.
Some of those old versions can't read or write the whole array
string at once: instead you must create FOR loops that read and
write one character at a time.